<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 
默认绑定(函数独自调用)，在浏览器当中this一般指向window
隐式绑定, this一般指向谁调用，就指向谁
显示绑定, this指向call,apply,bind这三个函数中的第一个参数
new绑定，this是指向调用这个构造器时创建出来的对象 
箭头函数中的this：定义函数所在的上下文
-->
</body>

</html>
<script>
    //默认绑定
    // function fun() {
    //     console.log(this);

    // }
    // 
    // fun();     //this 指向window

    // this显示绑定

    // var obj = {
    //     name: 'terry',
    //     sayName: function () {
    //         console.log(this);
    //     }

    // }
    // //    以方法的形式调用时，this就指向调用方法的那个对象
    // obj.sayName();   //   ===>obj这个对象



    // This隐式绑定
    // function fun(a, b) {
    //     console.log('a=' + a);
    //     console.log('b=' + b)
    //     console.log(this.name) 
    // }
    // //创建一个对象   
    // var obj = {
    //     name: 'obj',
    // };
    // // 使用call（）和apply（）调用时，this是指定的那个对象
    // fun.call(obj, 1, 2);  
    // //apply()  方法
    // fun.apply(obj, [1, 2]);

    // New 一个对象
    // function Person(name,age){
    //       this.name=name
    //       this.age=age
    // }
    // var p1=new Person('李四',18)
    // console.log(p1.name,p1.age);
    // var p2=new Person('王麻子',25)
    // console.log(p2.name,p2.age);


    //箭头函数   箭头函数会捕获其所在上下文的 this 值，作为自己的 this 值
    var obj = {
        a: 10,
        b: function () {
            console.log(this.a); 
        },

        c: function () {
            return () => {
        console.log(this.a); 
            }
        }
    }
    obj.b();
    obj.c()();

</script>